home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 4 / Amiga Tools 4.iso / tools / netzwerk / parnet-filesystem / support.c < prev   
C/C++ Source or Header  |  1996-02-26  |  5KB  |  254 lines

  1. /*-
  2.  * $Id: support.c,v 1.2 1995/11/14 00:08:15 Rhialto Exp $
  3.  * $Log: support.c,v $
  4.  * Revision 1.2  1995/11/14  00:08:15  Rhialto
  5.  * #ifdef -> #if.
  6.  *
  7.  * Revision 1.1  1993/12/02  20:45:46  Rhialto
  8.  * Initial revision
  9.  *
  10. -*/
  11.  
  12. #include "netfs.h"
  13.  
  14. /*
  15.  * PACKET ROUTINES.    Dos Packets are in a rather strange format as you
  16.  * can see by this and how the PACKET structure is extracted in the
  17.  * GetMsg() of the main routine.
  18.  */
  19.  
  20. Prototype void returnpacket(struct DosPacket *packet);
  21.  
  22. void
  23. returnpacket(struct DosPacket *packet)
  24. {
  25.     register struct Message *mess;
  26.     register struct MsgPort *replyport;
  27.  
  28.     replyport = packet->dp_Port;
  29.     mess = packet->dp_Link;
  30.     packet->dp_Port = DosPort;
  31.     mess->mn_Node.ln_Name = (char *) packet;
  32.     mess->mn_Node.ln_Succ = NULL;
  33.     mess->mn_Node.ln_Pred = NULL;
  34.     PutMsg(replyport, mess);
  35. }
  36.  
  37. /*
  38.  * Are there any packets queued to our device?
  39.  */
  40.  
  41. Prototype int packetsqueued(void);
  42.  
  43. int
  44. packetsqueued(void)
  45. {
  46.     return ((void *) DosPort->mp_MsgList.lh_Head !=
  47.         (void *) &DosPort->mp_MsgList.lh_Tail);     /* & inserted by OIS */
  48. }
  49.  
  50. /*
  51.  * DOS MEMORY ROUTINES
  52.  */
  53.  
  54. Prototype void *dosalloc(ULONG bytes);
  55.  
  56. void           *
  57. dosalloc(ULONG bytes)
  58. {
  59.     register ULONG *ptr;
  60.  
  61.     bytes += sizeof (*ptr);
  62.     if (ptr = AllocMem(bytes, MEMF_PUBLIC | MEMF_CLEAR)) {
  63.     *ptr = bytes;
  64.     return (ptr + 1);
  65.     }
  66.  
  67.     return NULL;
  68. }
  69.  
  70. Prototype void dosfree(ULONG *ptr);
  71.  
  72. void
  73. dosfree(ULONG *ptr)
  74. {
  75.     --ptr;
  76.     FreeMem(ptr, *ptr);
  77. }
  78.  
  79. /*
  80.  * Convert a BSTR into a normal string.. copying the string into buf. I
  81.  * use normal strings for internal storage, and convert back and forth
  82.  * when required.
  83.  */
  84.  
  85. Prototype void btos(UBYTE *bstr, UBYTE *buf);
  86.  
  87. void
  88. btos(UBYTE *bstr, UBYTE *buf)
  89. {
  90.     bstr = BTOC(bstr);
  91.     if (*bstr)
  92.     CopyMem(bstr + 1, buf, (long)*bstr);
  93.     buf[*bstr] = 0;
  94. }
  95.  
  96. /*
  97.  * Some EXEC list handling routines not found in the EXEC library.
  98.  */
  99.  
  100. Prototype void *NextNode(struct MinNode *node);
  101.  
  102. void           *
  103. NextNode(struct MinNode *node)
  104. {
  105.     node = node->mln_Succ;
  106.     if (node->mln_Succ == NULL)
  107.     return (NULL);
  108.     return (node);
  109. }
  110.  
  111. #ifdef notdef
  112.  
  113. Prototype void *GetHead(struct MinList *list);
  114.  
  115. void           *
  116. GetHead(struct MinList *list)
  117. {
  118.     if ((void *) list->mlh_Head != (void *) &list->mlh_Tail)
  119.     return (list->mlh_Head);
  120.     return (NULL);
  121. }
  122.  
  123. Prototype void * GetTail(struct MinList *list);
  124.  
  125. void           *
  126. GetTail(struct MinList *list)
  127. {
  128.     if ((void *) list->mlh_Head != (void *) &list->mlh_Tail)
  129.     return (list->mlh_TailPred);
  130.     return (NULL);
  131. }
  132. #endif
  133.  
  134. #if DEBUG
  135. Prototype char *typetostr(long ty);
  136.  
  137. char           *
  138. typetostr(long ty)
  139. {
  140.     switch (ty) {
  141.     case ACTION_DIE:
  142.     return ("DIE");
  143.     case ACTION_CURRENT_VOLUME:
  144.     return ("CURRENT VOLUME");
  145.     case ACTION_OPENRW:
  146.     return ("OPEN-RW");
  147.     case ACTION_OPENOLD:
  148.     return ("OPEN-OLD");
  149.     case ACTION_OPENNEW:
  150.     return ("OPEN-NEW");
  151.     case ACTION_READ:
  152.     return ("READ");
  153.     case ACTION_WRITE:
  154.     return ("WRITE");
  155.     case ACTION_CLOSE:
  156.     return ("CLOSE");
  157.     case ACTION_SEEK:
  158.     return ("SEEK");
  159.     case ACTION_EXAMINE_NEXT:
  160.     return ("EXAMINE NEXT");
  161.     case ACTION_EXAMINE_OBJECT:
  162.     return ("EXAMINE OBJ");
  163.     case ACTION_INFO:
  164.     return ("INFO");
  165.     case ACTION_DISK_INFO:
  166.     return ("DISK INFO");
  167.     case ACTION_PARENT:
  168.     return ("PARENTDIR");
  169.     case ACTION_DELETE_OBJECT:
  170.     return ("DELETE");
  171.     case ACTION_CREATE_DIR:
  172.     return ("CREATEDIR");
  173.     case ACTION_LOCATE_OBJECT:
  174.     return ("LOCK");
  175.     case ACTION_COPY_DIR:
  176.     return ("DUPLOCK");
  177.     case ACTION_FREE_LOCK:
  178.     return ("FREELOCK");
  179.     case ACTION_SET_PROTECT:
  180.     return ("SETPROTECT");
  181.     case ACTION_SET_COMMENT:
  182.     return ("SETCOMMENT");
  183.     case ACTION_RENAME_OBJECT:
  184.     return ("RENAME");
  185.     case ACTION_INHIBIT:
  186.     return ("INHIBIT");
  187.     case ACTION_RENAME_DISK:
  188.     return ("RENAME DISK");
  189.     case ACTION_MORECACHE:
  190.     return ("MORE CACHE");
  191.     case ACTION_WAIT_CHAR:
  192.     return ("WAIT FOR CHAR");
  193.     case ACTION_FLUSH:
  194.     return ("FLUSH");
  195.     case ACTION_RAWMODE:
  196.     return ("RAWMODE");
  197.     case ACTION_SET_DATE:
  198.     return ("SET_DATE");
  199.  
  200.     /* 2.0 stuff: */
  201.  
  202.     case ACTION_SET_FILE_SIZE:
  203.     return "ACTION_SET_FILE_SIZE";
  204.     case ACTION_SAME_LOCK:
  205.     return "ACTION_SAME_LOCK";
  206.     case ACTION_CHANGE_SIGNAL:
  207.     return "ACTION_CHANGE_SIGNAL ???";
  208.     case ACTION_WRITE_PROTECT:
  209.     return "ACTION_WRITE_PROTECT";
  210.     case ACTION_FH_FROM_LOCK:
  211.     return "ACTION_FH_FROM_LOCK";
  212.     case ACTION_IS_FILESYSTEM:
  213.     return "ACTION_IS_FILESYSTEM";
  214.     case ACTION_CHANGE_MODE:
  215.     return "ACTION_CHANGE_MODE";
  216.     case ACTION_COPY_DIR_FH:
  217.     return "ACTION_COPY_DIR_FH";
  218.     case ACTION_EXAMINE_FH:
  219.     return "ACTION_EXAMINE_FH";
  220.     case ACTION_PARENT_FH:
  221.     return "ACTION_PARENT_FH";
  222.     case ACTION_FORMAT:
  223.     return "ACTION_FORMAT";
  224.     case ACTION_MAKE_LINK:
  225.     return "ACTION_MAKE_LINK";
  226.     case ACTION_READ_LINK:
  227.     return "ACTION_READ_LINK";
  228.     case ACTION_LOCK_RECORD:
  229.     return "ACTION_LOCK_RECORD";
  230.     case ACTION_FREE_RECORD:
  231.     return "ACTION_FREE_RECORD";
  232.     case ACTION_EXAMINE_ALL:
  233.     return "ACTION_EXAMINE_ALL";
  234.     case ACTION_ADD_NOTIFY:
  235.     return "ACTION_ADD_NOTIFY";
  236.     case ACTION_REMOVE_NOTIFY:
  237.     return "ACTION_REMOVE_NOTIFY";
  238.  
  239.     /* 3.0 stuff: */
  240.  
  241.     case ACTION_EXAMINE_ALL_END:
  242.     return "ACTION_EXAMINE_ALL_END";
  243.     case ACTION_SET_OWNER:
  244.     return "ACTION_SET_OWNER";
  245.     case ACTION_SERIALIZE_DISK:
  246.     return "ACTION_SERIALIZE_DISK";
  247.  
  248.     default:
  249.     return ("---------UNKNOWN-------");
  250.     }
  251. }
  252.  
  253. #endif                /* HDEBUG */
  254.